Routing, Controllers, এবং Views হল MVC (Model-View-Controller) আর্কিটেকচারের গুরুত্বপূর্ণ উপাদান, যা রুবি on Rails (RoR) বা অন্য ওয়েব ফ্রেমওয়ার্কে ব্যবহৃত হয়। এই উপাদানগুলির সাহায্যে ওয়েব অ্যাপ্লিকেশনগুলোতে Request Handling, Data Processing, এবং Rendering the Response কার্যকরভাবে করা হয়। এখানে, আমরা রুবি on Rails ভিত্তিক ওয়েব ডেভেলপমেন্টে Routing, Controllers, এবং Views এর ব্যবস্থাপনা নিয়ে আলোচনা করব।
১. Routing in Ruby on Rails
Routing হল এমন একটি প্রক্রিয়া যা নির্ধারণ করে, ব্যবহারকারীর HTTP রিকোয়েস্ট কোন Controller এবং Action দ্বারা পরিচালিত হবে। রুবি on Rails-এ config/routes.rb ফাইলের মধ্যে রুটিং পরিচালনা করা হয়।
১.১ Basic Routing
রুটিং ফাইলটি সাধারণত config/routes.rb অবস্থান করে এবং এখানে রিকোয়েস্টের জন্য URL এবং সংশ্লিষ্ট controller#action সেট করা হয়।
উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
get 'home/index'
# other routes
endএখানে, get 'home/index' নির্দেশ করে যে, GET HTTP রিকোয়েস্ট আসলে তা HomeController এর index অ্যাকশনকে ট্রিগার করবে।
১.২ Resourceful Routing
Resourceful Routing হল একটি সাধারণ প্যাটার্ন যা RESTful কনভেনশনের উপর ভিত্তি করে তৈরি, যেখানে একটি রিসোর্সের জন্য মৌলিক CRUD (Create, Read, Update, Delete) অপারেশনগুলির রাউটগুলো স্বয়ংক্রিয়ভাবে তৈরি হয়।
উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
resources :articles
endএটি articles রিসোর্সের জন্য রাউট তৈরি করবে, যা নিম্নলিখিত URL গুলোর সাথে সম্পর্কিত:
- GET /articles →
articles#index - GET /articles/:id →
articles#show - GET /articles/new →
articles#new - POST /articles →
articles#create - GET /articles/:id/edit →
articles#edit - PATCH/PUT /articles/:id →
articles#update - DELETE /articles/:id →
articles#destroy
১.৩ Nested Routes
কখনও কখনও রিসোর্সের মধ্যে একটি রিসোর্স থাকতে পারে, যেখানে আপনি একটি রিসোর্সের অন্তর্গত একটি নতুন রিসোর্সের জন্য নেস্টেড রাউট তৈরি করতে পারেন।
উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
resources :authors do
resources :books
end
endএখানে, authors রিসোর্সের জন্য একটি books রিসোর্স নেস্ট করা হয়েছে, যার ফলে একটি লেখকের সাথে সম্পর্কিত বইয়ের রাউট তৈরি হবে। উদাহরণস্বরূপ:
- GET /authors/:author_id/books →
books#index - POST /authors/:author_id/books →
books#create
২. Controllers in Ruby on Rails
Controllers হল অ্যাপ্লিকেশনের অংশ যা HTTP রিকোয়েস্টগুলি গ্রহণ করে এবং সেগুলির উপর নির্ধারিত লজিক বা কাজ বাস্তবায়ন করে। এগুলি সাধারণত অ্যাকশন (action) নামে পরিচিত মেথড ধারণ করে, যেগুলি রাউটিং দ্বারা ডাকা হয়।
২.১ Controller Structure
একটি সাধারণ controller এমনভাবে তৈরি হয়:
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render :new
end
end
private
def article_params
params.require(:article).permit(:title, :body)
end
endএখানে:
- index: সমস্ত articles রিটার্ন করে।
- show: নির্দিষ্ট article এর বিস্তারিত দেখায়।
- new: একটি নতুন article তৈরি করতে ফর্ম প্রদর্শন করে।
- create: নতুন article তৈরি করে এবং সেভ করে।
২.২ Params Handling
params রেলসের একটি বিশেষ হ্যাশ যা ইউআরএল বা ফর্মের ডেটা ধারণ করে। params[:id] বা params[:article] এর মাধ্যমে রিকোয়েস্ট থেকে ডেটা অ্যাক্সেস করা হয়।
২.৩ Redirecting and Rendering Views
redirect_to: ইউজারকে অন্য একটি রাউট বা পেজে রিডাইরেক্ট করে।render: কন্ট্রোলার থেকে একটি ভিউ ফাইল (HTML) রেন্ডার করে।
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article # Redirect to show the created article
else
render :new # Re-render the new article form if saving fails
end
end৩. Views in Ruby on Rails
Views হল এমন অংশ যা ব্যবহারকারীর কাছে ডেটা প্রদর্শন করার জন্য ব্যবহৃত হয়। রুবি on Rails-এ views সাধারণত HTML.erb (Embedded Ruby) ফাইলের আকারে থাকে, যেখানে Ruby কোড HTML-এর মধ্যে এমবেড করা থাকে।
৩.১ Basic View Example
<!-- app/views/articles/index.html.erb -->
<h1>Articles</h1>
<% @articles.each do |article| %>
<div>
<h2><%= article.title %></h2>
<p><%= article.body %></p>
<%= link_to 'Show', article_path(article) %>
</div>
<% end %>এখানে:
<%= ... %>: Ruby code is evaluated and outputted in the HTML.<% ... %>: Ruby code is executed but not outputted.
৩.২ Rendering Partial Views
রেলসের partials ব্যবহার করে আপনি সাধারণভাবে ব্যবহৃত HTML ব্লকগুলো আলাদা ফাইল হিসেবে সংরক্ষণ করতে পারেন, যা পুনঃব্যবহারযোগ্য এবং পরিষ্কার কোড তৈরি করতে সাহায্য করে।
<!-- app/views/articles/_article.html.erb (partial) -->
<div class="article">
<h2><%= article.title %></h2>
<p><%= article.body %></p>
</div>
<!-- app/views/articles/index.html.erb -->
<h1>Articles</h1>
<%= render partial: 'article', collection: @articles %>এখানে, _article.html.erb একটি পার্শিয়াল ভিউ যা render ব্যবহার করে index.html.erb ফাইলে ইনক্লুড করা হয়েছে।
৩.৩ Layouts in Views
রেলসের layouts একটি সাধারণ কাঠামো যা সমস্ত ভিউতে শেয়ার করা হয়, যেমন হেডার, ফুটার ইত্যাদি। এক্সাম্পল:
<!-- app/views/layouts/application.html.erb -->
<!DOCTYPE html>
<html>
<head>
<title>My Application</title>
</head>
<body>
<header>
<h1>Welcome to My Application</h1>
</header>
<%= yield %> <!-- Yielding content of each view -->
<footer>
<p>© 2024 My Company</p>
</footer>
</body>
</html>এখানে, yield ব্লকটি ভিউয়ের কন্টেন্ট রেন্ডার করতে ব্যবহৃত হয়। অন্য সব ভিউ এই লেআউট ব্যবহার করবে, এবং ভিউ কন্টেন্ট এখানে yield এর মধ্যে রেন্ডার হবে।
সারসংক্ষেপ
- Routing: রাউটিং ফাইল (config/routes.rb) HTTP রিকোয়েস্টের জন্য URL এবং controller এর অ্যাকশন নির্ধারণ করে।
- Controllers: কন্ট্রোলারগুলি রিকোয়েস্টগুলি গ্রহণ করে এবং রেসপন্স তৈরি করে, এবং params এর মাধ্যমে ইউজারের ইনপুট প্রক্রিয়া করে।
- Views: ভিউগুলি HTML (বা অন্যান্য ফরম্যাট) দিয়ে ইউজারের কাছে ডেটা প্রদর্শন করে, এবং এর মধ্যে রুবি কোড এমবেড করা যায়।
- Resourceful Routing: রেলস ডিফল্টভাবে CRUD অপারেশনগুলোর জন্য রাউট তৈরি করে, যা কোডের অর্গানাইজেশন এবং রক্ষণাবেক্ষণ সহজ করে তোলে।
এই উপাদ
ানগুলির মাধ্যমে রুবি on Rails অ্যাপ্লিকেশনটি ভালভাবে পরিচালিত এবং পরিষ্কারভাবে ডেভেলপ করা যায়।
Read more